From edd1c66041c2c9b220eadc59fb7a6a830870ddbc Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 3 Feb 2013 15:44:41 -0500 Subject: [PATCH] Make GtkTextView deal better with !can_focus This was pointed out in https://bugzilla.gnome.org/show_bug.cgi?id=693050 --- gtk/gtktextview.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index d1b4c809c0..2fe292ca96 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -5218,24 +5218,31 @@ gtk_text_view_focus (GtkWidget *widget, { GtkContainer *container; gboolean result; - - container = GTK_CONTAINER (widget); + + container = GTK_CONTAINER (widget); if (!gtk_widget_is_focus (widget) && gtk_container_get_focus_child (container) == NULL) { - gtk_widget_grab_focus (widget); - return TRUE; + if (gtk_widget_get_can_focus (widget)) + { + gtk_widget_grab_focus (widget); + return TRUE; + } + + return FALSE; } else { + gboolean can_focus; /* * Unset CAN_FOCUS flag so that gtk_container_focus() allows * children to get the focus */ + can_focus = gtk_widget_get_can_focus (widget); gtk_widget_set_can_focus (widget, FALSE); result = GTK_WIDGET_CLASS (gtk_text_view_parent_class)->focus (widget, direction); - gtk_widget_set_can_focus (widget, TRUE); + gtk_widget_set_can_focus (widget, can_focus); return result; } -- 2.30.2